Methods and apparatus to manage monitoring agents

ABSTRACT

Methods and apparatus to manage monitoring agents. A disclosed example involves determining if a virtual machine has a first service installed that corresponds to a service rule, the service rule to specify a service identifier and a configuration for a monitoring agent. The method also involves determining if the virtual machine has the monitoring agent corresponding to the first service. The method also involves, in response to determining if the first service matches the service identifier specified by the service rule and that the monitoring agent is not installed on the virtual machine, initiating installation of the monitoring agent on the virtual machine.

FIELD OF THE DISCLOSURE

This disclosure relates generally to virtual machine computing and, moreparticularly, to methods and apparatus to manage monitoring agents in avirtual machine computing cloud.

BACKGROUND

“Infrastructure-as-a-Service” (also commonly referred to as “IaaS”)generally describes a suite of technologies provided by a serviceprovider as an integrated solution to allow for elastic creation of avirtualized, networked, and pooled computing platform (sometimesreferred to as a “cloud computing platform”). Enterprises may use IaaSas a business-internal organizational cloud computing platform(sometimes referred to as a “private cloud”) that gives an applicationdeveloper access to infrastructure resources, such as virtualizedservers, storage, and networking resources. By providing ready access tothe hardware resources required to run an application, the cloudcomputing platform enables developers to build, deploy, and manage thelifecycle of a web application (or any other type of networkedapplication) at a greater scale and at a faster pace than before.

Deployment tools currently in use are usually a patchwork of varioussoftware products from different vendors and/or homegrown solutions.Such tools are generally process-driven with heavy reliance on customscripts and property files. Traditional deployment tools are also notconfigured for automation with cloud computing platforms thatdynamically provision virtual computing resources.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example system constructed in accordancewith the teachings of this disclosure for automatically managingmonitoring agents.

FIG. 2 is a block diagram of an example virtual machine that may beanalyzed by the example system of FIG. 1 to determine whether to installand/or remove a monitoring agent to monitor the virtual machine.

FIG. 3 illustrates an example interface that may be presented by theservice rule definer of FIG. 1 to facilitate creation and/or managementof a service rule.

FIG. 4 is a flowchart representative of example machine readableinstructions that may be executed to implement the system of FIG. 1 toautomatically install a monitoring agent on a computing unit.

FIG. 5 is a flowchart representative of example machine readableinstructions that may be executed to implement the system of FIG. 1 toautomatically install monitoring agents on computing units based on amulti-tiered application.

FIG. 6 is a flowchart representative of example machine readableinstructions that may be executed to implement the system of FIG. 1 toautomatically remove and/or reconfigure a monitoring agent when aservice is removed from a computing unit.

FIG. 7 is a block diagram of an example processor platform capable ofexecuting the instructions of FIGS. 4, 5, and/or 6 to implement thesystem of FIG. 1.

Wherever possible, the same reference numbers will be used throughoutthe drawing(s) and accompanying written description to refer to the sameor like parts.

DETAILED DESCRIPTION

Monitoring agents are installed on computing units (e.g., virtualmachines (VM), physical machines (PM), etc.) to, for example, monitorthe performance of applications. Because monitoring agents are resourceintensive, virtual infrastructure administrators typically installmonitoring agents on computing units running important services (e.g.,web servers, application servers, database servers, applicationcomponents, etc.) that need to be monitored (and typically do notinstall monitoring agents on other less important computing units).Currently, the virtual infrastructure administrators manually installand configure monitoring agents on the computing units with services tobe monitored. Because virtual environments are dynamic, applications(e.g., multi-tiered applications) and services may be scaled outautomatically (e.g., by adding additional resources, services,applications, etc.). The automatic scaling of the applications and theservices may require the installation of new monitoring agent(s) acrossnew computing units and/or may require existing monitoring agents to bereconfigured for the new services and/or applications. Additionally, asservices and/or applications are moved and/or removed, monitoring agentsmay require reconfiguration or removal from a computing unit.

To accommodate management of monitoring agents (e.g., without userintervention), in examples disclosed herein, a user (e.g., the virtualinfrastructure administrator) defines service rules. The service rulesmay, for example, define the service(s) that require monitoring agents,the computing units and/or groups to monitor for the service(s), and/orcriteria for installation (e.g., install/configure a monitoring agentfor every detected instance of a service, install a monitoring agentonly when a service is newly installed, etc.). The service rule may alsodefine configuration information (e.g., IP address, installation source,credentials, etc.) relating to a monitoring agent server, servicemetrics to be reported to the monitoring agent server, and/orconfiguration properties for the monitoring agent server.

A virtual infrastructure navigator (VIN), as disclosed herein, mayautomatically discover services executing on computing units specifiedby the service rules. Example systems for automatically discoveringservices are discussed in U.S. application Ser. No. 14/231,018 entitled“Methods and Apparatus to Automatically Configure Monitoring of aVirtual Machine,” which is incorporated by reference herein in itsentirety. If a discovered service satisfies a service rule (e.g.,matches the defined application and/or service, is running on aspecified computing unit, and meets the specified criteria), an agentinstaller installs a monitoring agent on a target computing unit and/orconfigures the monitoring agent according to the service rule.

In some examples disclosed herein, the VIN causes discovery scripts tobe executed by the computing units. In some such examples, the VINdetects changes in the configuration (e.g., detects that a service hasbeen installed, detects that a service has been removed, etc.) of thecomputing units. In some such examples, automatically installing amonitoring agent on a computing unit is triggered by the VIN detectingchanges in the configuration of the computing unit.

In some examples disclosed herein, the VIN automatically discovers theinstallation of multi-tiered applications. In some such examples, theVIN identifies services installed as part of the multi-tieredapplications, identifies computing units corresponding to the services,and installs and/or configures monitoring agents on computing units withservices that satisfy one or more service rules.

In some examples disclosed herein, the VIN automatically detects when aservice has been removed from a computing unit. The example VINdetermines whether, according to a service rule, a monitoring agent wasinstalled and/or configured for the service on the computing unit. Insome such examples, without user intervention, the monitoring agent isreconfigured so that the monitoring agent does not attempt to monitorthe removed service. Additionally or alternatively, the monitoring agentis removed from the computing unit. In this manner, unnecessarymonitoring agents are removed from the deployment environment andresources are freed.

Example methods and apparatus disclosed herein facilitate the automaticmanagement of monitoring agents deployed in a deployment environment.Example methods and apparatus enable a user (e.g., a virtualinfrastructure administrator, etc.) to define service rules for servicesand/or applications that are monitored. In some example methods andapparatus, a VIN (e.g., vCenter™ Infrastructure Navigator™, acommercially available product from VMWare®, Inc.) or similar componentautomatically detects services running on a computing unit (e.g., avirtual machine, a physical machine, etc.). In some examples, theautomatically detected services are compared to the defined servicerules. If an automatically detected service satisfies a service rule(e.g., the automatically detected service is identified in the servicerule), a monitoring agent is installed and/or configured on thecomputing unit running the service without further intervention from theuser.

Example methods disclosed herein include determining if a first serviceis installed on computing unit (e.g., a virtual machine, a physicalmachine, etc.) that corresponds to a service rule, the service rule tospecify a service identifier and configuration for a monitoring agent,determining if the virtual machine includes the monitoring agent, and inresponse to determining that the first service matches the serviceidentifier and determining that the monitoring agent is not installed onthe virtual machine, initiating installation of the monitoring agent onthe virtual machine.

Example apparatus disclosed herein include a service analyzer todetermine whether if a virtual machine has a first service installedthat corresponds to a service rule and to determine if the virtualmachine has a monitoring agent corresponding to the first service, theservice rule to specify a service identifier and a configuration for themonitoring agent, and an agent installer to, in response to the firstservice matching the service identified specified by the service ruleand the monitoring agent not installed on the virtual machine, initiateinstallation of the monitoring agent on the virtual machine.

As used herein, the term “node” or “logical node” refers to a computingunit or a cluster of computing units defined in a service rule to bemonitored for a specified service.

As used herein, the term “service” refers to scripted software that canbe installed on a computing unit and may be reused in multipleapplications.

As used herein, the term “properties” refers to configuration variablesused by scripts to set parameters on a script and run variousconfigurations. For example, setting an installation_path property valuecauses installation scripts to use the property to specify the path touse to install a monitoring agent.

As used herein, the term “deployment environment” refers to a computingenvironment in a cloud provider. For example, separate deploymentenvironments may be used for development, testing, staging, and/orproduction. A cloud provider can have one or multiple deploymentenvironments.

FIG. 1 illustrates an example system 100 for automatically managingmonitoring agents 102 deployed across computing units 104 (e.g., virtualmachines (VM), physical machines (PM), etc.) managed by a cloud platformprovider 106 (also referred to herein as a “cloud provider”). Theexample system 100 includes a monitoring agent server 110 and a virtualinfrastructure navigator (VIN) 112, which may be used to automaticallydeploy, configure, and/or remove monitoring agents 102. The system 100of the illustrated example includes a discovery script repository 126 incommunication with the VIN 112.

The example cloud computing platform provider 106 provisions virtualand/or physical computing resources (e.g., the computing units 104) toprovide the deployment environments 108 in which the administrator 114and/or developer 116 can deploy multi-tiered application(s). Oneparticular example of a deployment environment that may be used toimplement the deployment environments 112 of FIG. 1 is vCloud DataCentercloud computing services available from VMWare®, Inc. The example cloudcomputing platform provider 106 of FIG. 1 may be used to providemultiple deployment environments 108, for example, for development,testing, staging, and/or production of applications. The administrator114 and/or the developer 116 may access services from the cloudcomputing platform provider 106, for example, via REST (RepresentationalState Transfer) APIs (Application Programming Interface) and/or via anyother client-server communication protocol. One particularimplementation of a REST API for cloud computing services is vCloud®Director API available from VMWare®, Inc.

In the example illustrated in FIG. 1, the example deployment environment108 includes multiple computing units 104 (e.g., virtual machines (VM)and physical machines (PM)). In the illustrated example of FIG. 1,services 117 (e.g., MySql server, e-mail server, etc.) are deployedacross the example computing units 104 in the deployment environment108. In some examples, computing units 104 are added and/or removed fromthe deployment environment 108 by the administrator 114 and/or thedeveloper 116. During the use of a multi-tiered application (e.g., anapplication with multiple services 117 spread across one or morecomputing units 104), the multi-tiered application may be dynamicallyscaled up (e.g., by adding services 117 and/or computing units 104associated with the application) or scaled down (e.g., by removingservices 117 and/or computing units 104 associated with the application)to add or remove resources as required by the multi-tiered applications.

In the example illustrated in FIG. 1, the VIN 112 includes a serviceanalyzer 118, a service rule definer 120, an agent installer 122, and aservice rule database 124. The example service rule database 124 isprovided to store and/or manage service rules created, deleted, and/ormodified by the example service rule definer 120.

In the example illustrated in FIG. 1, the administrator 114 and/or thedeveloper 116 use the service rule definer 120 to maintain the servicerule database 124 by creating, modifying, and/or deleting service rules.In the illustrated example, the service rule database 124 stores theservice rules generated via the service rule definer 120. In someexamples, the service rule database 124 may be any data structuresuitable for storing data, such as a relational database (e.g., a MySQLdatabase), or an Extensible Markup Language (XML) file, etc. The exampleservice rule definer 120 is to create, delete, and/or modify servicerules used by the example service analyzer 118 to determine whether anexample monitoring agent 102 is to be installed, removed, and/orconfigured on an example computing unit 104. Additionally oralternatively, service rules may be imported into the service ruledatabase 124 and may be subsequently maintained by the service ruledefiner 120.

In the example illustrated in FIG. 1, the service analyzer 118 is tomonitor services deployed on computing units 104 in the exampledeployment environment 108, to determine whether an example monitoringagent 102 is to be installed, removed, and/or configured on an examplecomputing unit 104. The example service analyzer 118 may additionally oralternatively direct the example agent installer 122 to install, remove,and/or configure an example monitoring agent 102 on an example computingunit 104. The example service analyzer 118 selects and/or accessesdiscovery script(s) stored in the example discovery script repository126. In some examples, the discovery script repository 126 may be anydata structure suitable for storing data, such as a relational database(e.g., a MySQL database), or an Extensible Markup Language (XML) file,etc. In some examples, the discovery scripts are sets of instructions tobe executed by computing units 104 analyzer and/or report theconfiguration of the computing unit 104. The service analyzer 118 of theillustrated example causes the discovery script(s) to be executed on thecomputing units 104 in the deployment environment 108 to detect changesin the configuration (e.g., detects installation of new services,detects removal of services, etc.) of the computing units 104 in thedeployment environment 108. Additionally or alternatively, the computingunits 104, from time to time, report the services installed on thecomputing units 104 to the VIN 112 and/or the service analyzer 118.

The example service analyzer 118 compares the service(s) 117 running onthe example computing units 104 to the service rules in the service ruledatabase 124. If a service satisfies a service rule (e.g., meets thecriteria defined in the service rule), the example service analyzer 118directs the example agent installer 112 to initiate installation and/orconfiguration of an example monitoring agent 102 on example thecomputing unit 104 corresponding to the service. For example, a service117 may satisfy a service rule when the service matches a serviceidentifier included in the service rule. In some examples, the serviceanalyzer 118 also detects when services have been removed from thecomputing units 104. In some such examples, the example service analyzer118 directs the example agent installer 122 to initiate removal of theexample monitoring agent 102 from the corresponding example computingunit 104 (e.g., when no other service is being monitored by the examplemonitoring agent 102) and/or to reconfigure the example monitoring agent102 (e.g., when another service is being monitored by the examplemonitoring agent 102). In some examples, the service analyzer 118 doesnot respond to detecting that a service 117 has been removed from acomputing unit 104 (e.g., does not remove the example monitoring agent).

In the example illustrated in FIG. 1, the agent installer 122 initiatesinstallation, configuration and/or removal of a monitoring agent 102from the computing unit 104 when directed by the service analyzer 112according to a service rule. The example service rule identifies aninitial configuration of the example monitoring agent 102 installed onthe example target computing unit 104. In some examples, the servicerule defines a configuration for the agent server 110. An exampleconfiguration includes an internet protocol (IP) address of themonitoring agent server 110, an agent user name, an agent user password,an installation package location, a Linux platform installationdirectory, a Windows platform installation directory, an agent version,configuration of the agent 102 as a service, a secure connectionconfiguration to the monitoring agent server 110, a performance agentserver port, a performance agent secure server port, a performance agentport, a unidirectional configuration (e.g., configuring either themonitoring agent 102 or the monitoring agent server 110 to initiate allcommunications, or configuring the monitoring agent 102 and themonitoring agent server 110 to initiate respective communications),and/or a checksum hash value. In some examples, the example service ruledefines which metrics supported by the example monitoring agent 102 areto be monitored and reported to the example monitoring agent server 110.

After the example agent installer 122 of FIG. 1 causes the installationand/or configuration of the monitoring agents 102 on the appropriatecomputing units 104, the example monitoring agent server 110 of FIG. 1automatically registers the monitoring agents 102 on the computing units104 (e.g., based on how the monitoring agents 102 are configured tocommunicate with the example monitoring agent server 110). Additionally,example agent installer 122 configures the computing units 104 to bemonitored according to a management or monitoring policy and/or performsany other monitoring tasks associated with the service. For example, thecomputing units 104 may be configured to allow the monitoring agent 102to communicate with the monitoring agent server 110 (e.g., configurepermissions on the computing unit 104, configure firewall of thecomputing unit 104, etc.).

In some examples, the example monitoring agent server 110 of FIG. 1automatically organizes the monitoring of the services. For example, themonitoring agent server 110 may group monitoring of the services 117 toenable ease of access by the administrator 114 and/or the developer 116.In some examples, the monitoring agent server 110 may group the services117 installed on the example computing units 104 of FIG. 1 for access bythe administrator 114 in association with a multi-tiered application. Insome examples, the monitoring agent server 110 may group monitoringagents 102 on the example computing units 104 that are associated withemail server services. In such an example, the administrator 116 maythen access or view performance information monitored by the monitoringagents 102 for the email servers by selecting an email server group in amonitoring agent management interface (e.g., vCenter™ Hyperic® availablefrom VMWare®, Inc.). In some examples, the monitoring agent managementinterface may be accessed via the monitoring agent server 110.

FIG. 2 is a block diagram of an example implementation of a virtualmachine (VM) 200 executing within the development environment 108 ofFIG. 1. The example VM 200 is one of the computing units 104 that isvirtualized on physical resources 202 (e.g., processor(s), memory,storage, peripheral devices, network access, etc.) provided by theexample development environment 108. In the illustrated example thephysical resources 202 are managed by a virtual machine manager (VMM)204 of FIG. 2. In the illustrated example, the VMM 204 createsvirtualized hardware 206 (e.g., virtualized storage, virtualized memory,virtualized processor(s), etc.) to allow multiple VMs 200 to beinstantiated in the deployment environment 108 using the same physicalresources 202. In some examples, the VMM 204 manages the physicalresources 202 (e.g., creates the virtualized hardware 206) based onpolices implemented by the administrator 114 (FIG. 1) and/or thedeveloper 116 (FIG. 1). For example, a policy may restrict access toparticular locations in memory and/or storage, etc.

In some examples, the VIN 112 of FIG. 1 is provided with credentials(e.g., a user name and password of a user or administrator authorized toaccess the relevant portions of the VM 200) to access the componentsand/or properties of the VM 200 via communications interface 208 of theVMM 204 and/or a communications interface 210. In some examples, the VIN112 may issue text-based commands to the VM 200 to initiate discoveryscripts and/or initiate installation of the monitoring agent 102. Insome examples, the VMM 204 and/or the VM 200 may report informationabout the services installed on the VM 200 to the VIN 112.

In the example illustrated in FIG. 2, the VM 200 executes a guestoperating system (OS) 212 (e.g., a Windows operating system, a Linuxoperating system, etc.). In the illustrated example, the guest OS 212executes the services 117. Alternatively, the services 117 may beexecuted in a different environment of the VM 200 (e.g., the services117 may execute natively on the VM 200, etc.). Additionally, the exampleguest OS 212 executes the example monitoring agent 102 (FIG. 1)installed by the agent installer 122 (FIG. 1) based on the service rulesto monitor services installed on the VM 200. Alternatively, themonitoring agent 102 may be executed in a different environment of theVM 200 (e.g., the monitoring agent 102 may execute natively on the VM200, the monitoring agent 102 may execute on the physical resources,etc.).

While an example manner of implementing the system 100 is illustrated inFIGS. 1 and/or 2, one or more of the elements, processes and/or devicesillustrated in FIGS. 1 and/or 2 may be combined, divided, re-arranged,omitted, eliminated and/or implemented in any other way. Further, theexample monitoring agents 102, the example computing units 104, theexample development environment 108, the example monitoring agent server110, the example virtual infrastructure navigator 112, the exampleservice analyzer 118, the example service rule definer 120, the exampleagent installer 122, the example service rule database 124, the exampleVM 200, and/or, more generally, the example system 100 of FIG. 1 may beimplemented by hardware, software, firmware and/or any combination ofhardware, software and/or firmware. Thus, for example, any of theexample monitoring agents 102, the example computing units 104, theexample development environment 108, the example monitoring agent server110, the example virtual infrastructure navigator 112, the exampleservice analyzer 118, the example service rule definer 120, the exampleagent installer 122, the example service rule database 124, the exampleVM 200, and/or, more generally, the example system 100 of FIG. 1 couldbe implemented by one or more analog or digital circuit(s), logiccircuits, programmable processor(s), application specific integratedcircuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or fieldprogrammable logic device(s) (FPLD(s)). When reading any of theapparatus or system claims of this patent to cover a purely softwareand/or firmware implementation, at least one of the example monitoringagents 102, the example computing units 104, the example developmentenvironment 108, the example monitoring agent server 110, the examplevirtual infrastructure navigator 112, the example service analyzer 118,the example service rule definer 120, the example agent installer 122,the example VM 200, and/or the example service rule database 124 is/arehereby expressly defined to include a tangible computer readable storagedevice or storage disk such as a memory, a digital versatile disk (DVD),a compact disk (CD), a Blu-ray disk, etc. storing the software and/orfirmware. Further still, the example system 100 of FIGS. 1 and/or 2 mayinclude one or more elements, processes and/or devices in addition to,or instead of, those illustrated in FIGS. 1 and/or 2, and/or may includemore than one of any or all of the illustrated elements, processes anddevices.

FIG. 3 illustrates an example interface 300 that may be presented by theexample service rule definer 120 of FIG. 1 (e.g., to the administrator114 and/or the developer 116 of FIG. 1) to enable creation and/ormanagement of a service rule. Example configuration information includesa service rule name 302, an identifier 304 of application(s) and/orservice(s) to be monitored, nodes 306 to monitor for the application(s)and/or the service(s) (e.g., the application(s) and/or service(s)identified by identifier 304), group(s) 308 to monitor for theapplication(s) and/or the service(s) to be monitored, criteria 310,agent server configuration information 312 (e.g., agent server address,agent server credentials, etc.), metrics to be monitored 314, and/orconfiguration properties 316. The example configuration information302-316 may be configured by the example administrator 114 and/or theexample developer 116.

The example service rule name 302 is provided to facilitate the exampleadministrator 114 and/or the example developer 116 to assign a name tothe example service rule (e.g., in accordance with cloud provideradministration policies). The identifier 304 is provided to enable theexample administrator 114 and/or the example developer 116 to define oneor more applications and/or services to be monitored. For example, aservice rule may be defined for one or more services 117, such as, MySQL5.x servers and MySQL 4.x servers. For example, a service rule may bedefined for a multi-tiered application, such as, Exchange 2010 (e.g.,including agent server configuration information 312, metrics to bemonitored 314, and/or configuration properties 316 for the servicesrelated to Exchange 2010). In the illustrated example, a node field 306and/or a group field 308 are provided to display a selection of nodesand/or groups to define the computing units (e.g., the computing units104 of FIG. 1) to monitor for the application(s) and/or service(s) to bemonitored (e.g., as identified by identifier 304). In some examples, thenode field 306 and/or the group field 308 may be left blank and/or maynot be provided on the interface 300 (e.g., any computing unit 104 inthe development environment 108 and/or the cloud provider 106 (FIG. 1)may be monitored for the application(s) and/or service(s) to bemonitored). An example criteria field 310 may be provided to allowcriteria to be specified (e.g., though text input, through selection ofitems on a list, etc.) For example, criteria specified in the criteriafield 310 may define conditions that will cause the example serviceanalyzer 118 of FIG. 1 to signal the example agent installer 122 of FIG.1 to initiate installation, configuration and/or removal of an examplemonitoring agent 102. For example, criteria may be selected in thecriteria field 310 so that monitoring agents 102 are installed only inresponse to detecting newly installed services (e.g., services 117 ofFIG. 1) (as opposed to services 117 currently installed on a computingunit 104 at the time the service rule is created). In some examples, thecriteria field 310 may be left blank or may not be included interface300 (e.g., no additional criteria is required to initiate installationand/or configuration of a monitoring agent).

One or more agent server configuration information fields 312 areprovided to allow the example administrator 114 and/or the exampledeveloper 116 to define configuration information (e.g., an IP addressof the example monitoring agent server 110 of FIG. 1, an agent username, an agent user password, an installation package location, a Linuxplatform installation directory, a Windows platform installationdirectory, an agent version, configuration of the example agent 102 as aservice, a secure connection configuration to the example monitoringagent server 110, a performance agent server port, a performance agentsecure server port, a performance agent port, a unidirectionalconfiguration, and/or a checksum hash value, etc.) to install and/orconfigure a monitoring agent 102 (e.g., to allow the automaticallyinstalled example monitoring agent 102 to communicate with the examplemonitoring agent server 110 of FIG. 1). In the illustrated example, oneor more example metric fields 312 are provides to allow theadministrator 114 and/or the developer 116 to define information to bemonitored by the monitoring. In some examples, the selectable metrics inthe metrics field 314 are defined according to specific services and/orapplications (e.g., the services and/or the application indicated by theexample identifier 304). In some examples, the administrator 114 and/orthe developer 116 select one or more of the metrics 314 to be monitoredand select an interval (e.g., 5 minutes, default interval defined forthe metric, etc.). In the illustrated example, one or more properties316 are provided to receive a property selection. In some examples, theavailable property selection is determined by the identifier 304. Theexample properties 316 specify parameters the example agent installer122 uses to configure the example monitoring agent 102 according to thepreferences of the administrator 114 and/or the developer 116.

Flowchart representative of example machine readable instructions forimplementing the example VIN 112, the example monitoring agent server110 and/or the example discovery script repository 126 of FIG. 1 areshown in FIGS. 4, 5, and/or 6. In these examples, the machine readableinstructions comprise a program for execution by a processor such as theprocessor 712 shown in the example processor platform 700 discussedbelow in connection with FIG. 7. The program may be embodied in softwarestored on a tangible computer readable storage medium such as a CD-ROM,a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-raydisk, or a memory associated with the processor 712, but the entireprogram and/or parts thereof could alternatively be executed by a deviceother than the processor 712 and/or embodied in firmware or dedicatedhardware. Further, although the example programs are described withreference to the flowcharts illustrated in FIGS. 4, 5, and 6, many othermethods of implementing the example VIN 112, the example monitoringagent server 110 and/or the example discovery script repository 126 mayalternatively be used. For example, the order of execution of the blocksmay be changed, and/or some of the blocks described may be changed,eliminated, or combined.

As mentioned above, the example processes of FIGS. 4, 5, and/or 6 may beimplemented using coded instructions (e.g., computer and/or machinereadable instructions) stored on a tangible computer readable storagemedium such as a hard disk drive, a flash memory, a read-only memory(ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, arandom-access memory (RAM) and/or any other storage device or storagedisk in which information is stored for any duration (e.g., for extendedtime periods, permanently, for brief instances, for temporarilybuffering, and/or for caching of the information). As used herein, theterm tangible computer readable storage medium is expressly defined toinclude any type of computer readable storage device and/or storage diskand to exclude propagating signals and to exclude transmission media. Asused herein, “tangible computer readable storage medium” and “tangiblemachine readable storage medium” are used interchangeably. Additionallyor alternatively, the example processes of FIGS. 4, 5, and/or 6 may beimplemented using coded instructions (e.g., computer and/or machinereadable instructions) stored on a non-transitory computer and/ormachine readable medium such as a hard disk drive, a flash memory, aread-only memory, a compact disk, a digital versatile disk, a cache, arandom-access memory and/or any other storage device or storage disk inwhich information is stored for any duration (e.g., for extended timeperiods, permanently, for brief instances, for temporarily buffering,and/or for caching of the information). As used herein, the termnon-transitory computer readable medium is expressly defined to includeany type of computer readable storage device and/or storage disk and toexclude propagating signals and to exclude transmission media. As usedherein, when the phrase at least” is used as the transition term in apreamble of a claim, it is open-ended in the same manner as the term“comprising” is open ended.

FIG. 4 is a flowchart representative of example machine readableinstructions 400 which may be executed to implement the system 100 ofFIG. 1 to automatically install a monitoring agent (e.g., the examplemonitoring agent 102 of FIGS. 1 and 2) on a computing unit (e.g., theexample computing unit 104 of FIG. 1 and/or the example VM 200 of FIG.2). Initially, at block 402, the service rule definer 120 (FIG. 1)defines a service rule. In some examples, the example service ruledefiner 120 defines a service rule after receiving input from theadministrator 114 (FIG. 1) and/or the developer 116 (FIG. 1) via theexample interface 300 (FIG. 3). At block 404, the example serviceanalyzer 118 (FIG. 1) automatically detects a service (e.g., the exampleservice 117 of FIG. 1) installed on a computing unit 104. At block 406,the example service analyzer 118 determines whether the example service117 detected at block 404 satisfies the example service rule defined atblock 402. In some examples, the service 117 satisfies the service ruleif the service corresponds to an identifier of service(s) to bemonitored (e.g. the identifier 304 of FIG. 3) defined in the servicerule. Additionally or alternatively, the service 117 say satisfy theservice rule if the computing unit 104 on which the service 117 isinstalled corresponds to a computing unit 104 specified by nodes and/orgroups (e.g., specified by the example node field 306 and/or the examplegroup field 308 of FIG. 3) defined in the service rule. Additionally oralternatively, the service 117 may satisfy the service rule if thecriteria (e.g., the criteria specified in the criteria field 310 of FIG.3) defined by the service rule is met (e.g., the service 117 is newlyinstalled on the computing unit 104, etc.). If the service 117 satisfiesthe service rule, program control advances to block 408. Otherwise, ifthe service 117 does not satisfy the service rule, program controlreturns to block 404.

At block 408, the example service analyzer 118 determines whether amonitoring agent (e.g., the example monitoring agent 102 of FIG. 1) isinstalled on the computing unit 104 corresponding to the service 117detected at block 404. If a monitoring agent 102 is not installed on thecomputing unit 104, program control advances to block 410. Otherwise,program control advances to block 412. At block 410, the example agentinstaller 122 (FIG. 1) initiates installation of the example monitoringagent 102 on the computing unit 104 corresponding to the service 117detected at block 404. In some examples, the agent installed 122initiates the installation of the monitoring agent 102 withoutintervention from a user (e.g., the administrator 114 or the developer116, etc.). Program control then advances to block 412. At block 412,the agent installer 122 configures the monitoring agent 102 according tothe configuration information 312-316 (FIG. 3) defined in the servicerule defined at block 402. In some examples, the agent installer 122configures the monitoring agent 102 without intervention from a user.Example program 400 then ends.

FIG. 5 is a flowchart representative of example machine readableinstructions 500 that may be executed to implement the example system100 of FIG. 1 to automatically (e.g., without user intervention) installmonitoring agents (e.g., a monitoring agent 102 of FIG. 1) on acomputing unit (e.g., the example computing unit 104 of FIG. 1) inresponse to detecting installation of a multi-tiered application.Initially, at block 502, the example service rule definer 120 (FIG. 1)defines a service rule. In some examples, the service rule definer 120defines a service rule after receiving input from the administrator 114(FIG. 1) and/or the developer 116 (FIG. 1) (e.g., through the interface300 of FIG. 3). At block 504, the example service analyzer 118 (FIG. 1)automatically (e.g., without user intervention) detects installation ofa multi-tiered application on the computing unit 104 within a deploymentenvironment (e.g., the example deployment environment 108 of FIG. 1).

At block 506, the example service analyzer 118 (FIG. 1) determineswhether the multi-tiered application satisfies a service rule. In someexamples, the multi-tiered application satisfies the service rule if themulti-tiered application corresponds to an identifier of multi-tieredapplication(s) to be monitored (e.g. the identifier 304 of FIG. 3)defined in the service rule. Additionally or alternatively, themulti-tiered application satisfies the service rule if the computingunits 104 corresponding to the multi-tiered application is installed oncorresponds to a computing units 104 specified by nodes and/or groups(e.g., as specified by the node field 306 and/or the group field 308 ofFIG. 3) defined in the service rule. Additionally or alternatively, themulti-tiered application satisfies the service rule if the criteria(e.g., the criteria specified by the criteria field 310 of FIG. 3)defined by the service rule is met (e.g., the multi-tiered applicationis newly installed on the computing unit 104, etc.). If a service ruleis satisfied, program control advances to block 508. Otherwise, if aservice rule is not satisfied, program control returns to block 504.

At block 508, the service analyzer 118 detects services(s) andcorresponding computing units 104 related to the installation of themulti-tiered application. In some examples, the service analyzer 118receives an application definition (e.g., a list of the example services117 and the example computing units 104 on which those services 117 wereinstalled, etc.). In some examples, the service analyzer 118 causesexample discovery scripts (e.g., the discovery scripts stored in thediscovery script repository 126 of FIG. 1) to be executed on thecomputing units 104 in the example deployment environment 108 todiscover relationships between the services 117 related to themulti-tiered application and the computing units 104 on which theservices 117 are installed. At block 510, the service analyzer 118selects the computing unit 104 detected at block 508.

At block 512, the service analyzer 118 determines whether a monitoringagent (e.g., the example monitoring agent 102 of FIGS. 1 and/or 2) isinstalled on the computing unit 104 selected at block 510. If themonitoring agent 102 is not installed on the computing device 104,program control advances to block 514. Otherwise, if the monitoringagent 102 is installed on the computing device 104, program controladvances to block 516.

At block 514, without intervention from a user (e.g., the administrator114 or the developer 116, etc.), the agent installer 122 (FIG. 1)initiates installation of the monitoring agent 102 on the computing unit104 selected at block 510. Program control then advances to block 516.

At block 516, without intervention from a user (e.g., the administrator114 or the developer 116, etc.), the agent installer 122 configures themonitoring agent 102 according to the configuration information 312-316(FIG. 3) defined in the service rule defined at block 502. At block 518,the service analyzer 118 determines whether there is another one of thecomputing units 104 detected at block 508 that requires the monitoringagent 102 to be installed and/or configured. If there is another one ofthe computing units 104, program control returns to block 510.Otherwise, the example program 500 ends.

FIG. 6 is a flowchart representative of example machine readableinstructions 600 which may be executed to implement the example system100 of FIG. 1 to automatically (e.g., without user intervention) removeand/or reconfigure a monitoring agent (e.g., the example monitoringagent 102 of FIGS. 1 and 2) when a service (e.g., the example service117 of FIG. 1) is removed from a computing unit (e.g., the examplecomputing unit 104 of FIG. 1). Initially, at block 602, the exampleservice analyzer 118 (FIG. 1) automatically detects the removal of theservice 117 from the computing device 104. At block 604, the serviceanalyzer 118 determines whether the service 117 detected at block 602satisfies a service rule. In some examples, the service 117 satisfiesthe service rule if the service corresponds to an identifier of aservice to be monitored (e.g. the identifier 304 of FIG. 3) defined inthe service rule. Additionally or alternatively, the service 117satisfies the service rule if the computing unit 104 on which theservice 117 was installed corresponds to the computing unit 104specified by nodes and/or groups (e.g., the nodes 306 and/or the groups308 of FIG. 3) defined in the service rule. Additionally oralternatively, the service 117 satisfies the service rule if thecriteria (e.g., the criteria specified by the criteria field 310 of FIG.3) defined by the service rule is met (e.g., the service rule allows forremoval of a monitoring agent 102, etc.). If the service 117 satisfiesthe service rule, program control advances to block 606. Otherwise, ifthe service 117 does not satisfy the service rule, program controlreturns to block 602.

At block 606, the service analyzer 118 determines whether the monitoringagent 102 installed on the computing unit 104 detected at block 602 ismonitoring another service. If the monitoring agent 102 is monitoringanother service, then program control advances to block 608. Otherwise,if the monitoring agent 102 is not monitoring another service, programcontrol advances to block 610.

At block 608, the agent installer 122 (FIG. 1) initiates reconfigurationof the monitoring agent 102 to remove configuration information (e.g.,the configuration information 312-316) related to the removed service102 according to the service rule. In some examples, the agent installer122 initiates the reconfiguration of the monitoring agent 102 withoutintervention from a user (e.g., an administrator 114 and/or a developer116 of FIG. 1, etc.). The example program 600 of FIG. 6 then ends.

At block 610, the agent installer 122 initiates removal of themonitoring agent 102 from the computing unit 104 detected at block 602.In some examples, the agent installer 122 initiates removal of themonitoring agent without intervention from the user. The example program600 of FIG. 6 then ends.

FIG. 7 is a block diagram of an example processor platform 800 capableof executing the instructions of FIGS. 4, 5, and/or 6 to implement theexample system 100 of FIG. 1. The processor platform 700 can be, forexample, a server, a personal computer, or any other type of computingdevice.

The processor platform 700 of the illustrated example includes aprocessor 712. The processor 712 of the illustrated example is hardware.For example, the processor 712 can be implemented by one or moreintegrated circuits, logic circuits, microprocessors or controllers fromany desired family or manufacturer.

The processor 712 of the illustrated example includes a local memory 713(e.g., a cache). The processor 712 of the illustrated example is incommunication with a main memory including a volatile memory 714 and anon-volatile memory 716 via a bus 718. The volatile memory 714 may beimplemented by Synchronous Dynamic Random Access Memory (SDRAM), DynamicRandom Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM)and/or any other type of random access memory device. The non-volatilememory 716 may be implemented by flash memory and/or any other desiredtype of memory device. Access to the main memory 714, 716 is controlledby a memory controller.

The processor platform 700 of the illustrated example also includes aninterface circuit 720. The interface circuit 720 may be implemented byany type of interface standard, such as an Ethernet interface, auniversal serial bus (USB), and/or a PCI express interface.

In the illustrated example, one or more input devices 722 are connectedto the interface circuit 720. The input device(s) 722 permit(s) a userto enter data and commands into the processor 812. The input device(s)can be implemented by, for example, a keyboard, a button, a mouse, atouchscreen, a track-pad, a trackball, isopoint and/or a voicerecognition system.

One or more output devices 724 are also connected to the interfacecircuit 720 of the illustrated example. The output devices 724 can beimplemented, for example, by display devices (e.g., a light emittingdiode (LED), an organic light emitting diode (OLED), a liquid crystaldisplay, a cathode ray tube display (CRT), a touchscreen, a tactileoutput device, a printer and/or speakers). The interface circuit 720 ofthe illustrated example, thus, typically includes a graphics drivercard, a graphics driver chip or a graphics driver processor.

The interface circuit 720 of the illustrated example also includes acommunication device such as a transmitter, a receiver, a transceiver, amodem and/or network interface card to facilitate exchange of data withexternal machines (e.g., computing devices of any kind) via a network726 (e.g., an Ethernet connection, a digital subscriber line (DSL), atelephone line, coaxial cable, a cellular telephone system, etc.).

The processor platform 700 of the illustrated example also includes oneor more mass storage devices 728 for storing software and/or data.Examples of such mass storage devices 728 include floppy disk drives,hard drive disks, compact disk drives, Blu-ray disk drives, RAIDsystems, and digital versatile disk (DVD) drives.

The coded instructions 732 of FIGS. 4, 5, and/or 6 may be stored in themass storage device 728, in the volatile memory 714, in the non-volatilememory 716, and/or on a removable tangible computer readable storagemedium such as a CD or DVD.

From the foregoing, it will be appreciate that examples disclosed hereindynamically (e.g., without intervention from a user) scale monitoring ofservices executing on virtual machines implementing multi-tieredapplications. In such examples, user error and oversight are minimizedby detecting installation of important services so that, for example,the important services are monitored in the dynamic environment.

Although examples herein disclose managing monitoring agents withoutuser intervention, alternatively, some limited user intervention (e.g.,entering credentials, starting and/or stopping the automatedinstallation of monitoring agents, starting and/or stopping automationsoftware, starting and/or stopping automated services, starting and/orstopping computing devices, etc.) may be used without departing from thescope of the disclosure. For example, a user may intervene to start theVIN 112 of FIG. 1 which may then monitor the computing unit(s) 104(FIG. 1) in the deployment environment 108 (FIG. 1) and install and/orremove the monitoring agent 102 (FIGS. 1 and/or 2) without userintervention.

Although certain example methods, apparatus and articles of manufacturehave been disclosed herein, the scope of coverage of this patent is notlimited thereto. On the contrary, this patent covers all methods,apparatus and articles of manufacture fairly falling within the scope ofthe claims of this patent.

What is claimed is:
 1. A method comprising: determining if a firstservice is installed on a virtual machine that corresponds to a servicerule, the service rule to specify a service identifier and configurationfor a monitoring agent; determining if the virtual machine includes themonitoring agent; and in response to determining that the first servicematches the service identifier and determining that the monitoring agentis not installed on the virtual machine, initiating installation of themonitoring agent on the virtual machine.
 2. A method as defined in claim1, wherein installation of the monitoring agent is initiated withoutuser intervention.
 3. A method as defined in claim 1, furthercomprising: determining when the first service is no longer installed onthe virtual machine; and in response to determining that the firstservice is no longer installed on the virtual machine, initiatingremoval of the monitoring agent corresponding to the first service fromthe virtual machine without user intervention.
 4. A method as defined inclaim 1, wherein determining whether the first service is installed onthe virtual machine is performed in response to detecting aconfiguration change of the virtual machine.
 5. A method as defined inclaim 4, wherein detecting the configuration change of the virtualmachine further comprises causing a discovery script to be executed onthe virtual machine.
 6. A method as defined in claim 1, whereindetermining if the virtual machine has the first service installed thatcorresponds to the service rule is performed by at a service analyzerseparate from the virtual machine.
 7. A method as defined in claim 1,wherein the monitoring agent collects performance data for the firstservice, tracks events generated by the first service, and allows a userto start and stop the first service from a virtual machine monitor.
 8. Amethod as define in claim 1, further comprising, in response todetermining the first service matches the service identifier of theservice rule and that the monitoring agent is installed on the virtualmachine, configuring the monitoring agent to monitor the first servicebased on the configuration specified by the service rule.
 9. A system,comprising: a service analyzer to determine whether if virtual machinehas a first service installed that corresponds to a service rule and todetermine if the virtual machine has a monitoring agent corresponding tothe first service, the service rule to specify a service identifier anda configuration a configuration for the monitoring agent; and an agentinstaller to, in response to the first service matches the serviceidentified specified by the service rule and the monitoring agent notinstalled on the virtual machine, initiate installation of themonitoring agent on the virtual machine.
 10. A system as defined inclaim 9, wherein the service analyzer is to determine if the firstservice is no longer installed on the virtual machine, and the agentinstaller is to, if the first service is no longer installed on thevirtual machine, initiate removal of the monitoring agent correspondingto the first service from the virtual machine without user intervention.11. A system as defined in claim 9, wherein the service analyzer is todetermine whether the first service is installed on the virtual machineis in response to detecting a configuration change of the virtualmachine
 12. A system as defined in claim 11, wherein the serviceanalyzer is to detect the configuration change of the virtual machine bycausing a discovery script to be executed on the virtual machine.
 13. Asystem as defined in claim 9, where the agent installer is to initiateinstallation of the monitoring agent on the virtual machine without userintervention.
 14. A system as defined in claim 9, wherein the serviceanalyzer and the agent installer are separate from the virtual machine.15. A system as defined in claim 9, further comprising a monitoringagent server to collect performance data for the first service, to trackevents generated by the first service, and to allow a user to start andstop the first service from a virtual machine monitor.
 16. A system asdefined in claim 9, wherein, if the first service matches the serviceidentifier specified by the service rule and if the monitoring agent isinstalled on the virtual machine, the agent installer is to configurethe monitoring agent to monitor the first service based on theconfiguration specified by the service rule.
 17. A tangible computerreadable storage medium comprising computer readable instructions which,when executed, cause a processor to at least: determine if a virtualmachine has a first service installed that corresponds to a servicerule, the service rule to specify a service identifier and aconfiguration of a monitoring agent; determine if the virtual machinehas the monitoring agent corresponding to the first service; and inresponse to determining that the first service matches the serviceidentifier specified by the service rule and that the monitoring agentis not installed on the virtual machine, initiate installation of themonitoring agent on the virtual machine.
 18. A tangible computerreadable storage medium as defined in claim 17, wherein the instructionsfurther cause the processor to: determine if the first service is nolonger installed on the virtual machine; and in response to determiningif the first service is no longer installed on the virtual machine,initiate removal of the monitoring agent corresponding to the firstservice from the virtual machine without user intervention.
 19. Atangible computer readable storage medium as defined in claim 17,wherein the instructions further cause the processor to: in response todetermining if the first service matches the service identifierspecified by the service rule and the monitoring agent is installed onthe virtual machine, configure the monitoring agent to monitor the firstservice based on the configuration specified by the service rule.
 20. Atangible computer readable storage medium as defined in claim 17,wherein the instructions further cause the processor to initiateinstallation of the monitoring agent on the virtual machine without userintervention.